// 可以直接用字面量来直接声明
var a;
a = 10;
// 可以使用 | ，来联合多个类型
var b;
b = 'male';
b = "female";
var c;
c = true;
c = 'hello';
// any表示任意类型，一个变量设置为any后相当于关闭了ts的类型的检测
// 使用ts时，建议不使用any类型
// 当变量不指定类型，且声明的时候未赋值，则TS解析器会将变量自动判断为any（隐式的any）
var d = true;
d = 'hello';
d = 11;
// unknown 表示未知类型的值
var e;
e = 10;
e = undefined;
e = "hello";
var s;
// d类型为any，可以赋值给任意变量
// s = d;
// unknown相当于是类型安全的any
// unknown不能直接赋值给其他变量
// s = e; //报错
if (typeof e === 'string') {
    s = e;
}
// 类型断言，告诉解析器变量的实际类型
/**
 * 语法：
 *      变量 as 类型
 *      <类型> 变量
 */
s = e;
s = e;
// void 表示为空，以函数为例，就表示没有返回值的函数，但可以返回null | undefined；
function fn() {
    return undefined;
}
//never 表示不会返回结果，比如绝对会抛出异常的函数
function fn2() {
    throw new Error('抛出异常');
}
